package com.sxj.corejava.code11_io.File;

import java.io.File;

/**
 * @author 石小俊
 * @date 2024年05月14日 20:26
 * 获取指定目录中所有的文件,包含子目录中的文件
 */
public class Test03_递归操作 {

    public static void main(String[] args) {
        File file = new File("E:/itany");
        try {
            display(file);
        } catch (FileNotExistException e) {
            e.printStackTrace();
        }
    }

    public static void display(File file) throws FileNotExistException {
        // 判断目录是否存在
        if (!file.exists()) {
            throw new FileNotExistException("该目录不存在");
        }

        // 判断该文件是否是一个目录
        if (file.isDirectory()) {
            // 取出当前目录中所有文件
            File[] files = file.listFiles();
            for (File f : files) {
                // 判断当前是否是文件
                if (f.isFile()) {
                    System.out.println(f.getAbsolutePath());
                } else {
                    // 如果是目录,递归
                    display(f);
                }
            }
        } else {
            // 如果不是目录,则表示是一个文件,展示文件绝对路径
            System.out.println(file.getAbsolutePath());
        }
    }

}
